﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SpotifyGenNHibernate.EN.Spotify;
using SpotifyGenNHibernate.CAD.Spotify;
using SpotifyGenNHibernate.CEN.Spotify;

namespace initializeDB
{
    public partial class frmEscucharCola : Form
    {
        private UsuarioEN usuarioActual = null;
        private int puntero = 0;
        private string seleccion;
        private int punteroseleccion = 0;

        public frmEscucharCola(UsuarioEN usu)
        {
            
            InitializeComponent();
            usuarioActual = usu;

        }

        private void btVolver_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void frmEscucharCola_Load(object sender, EventArgs e)
        {
            try
            {


                usuarioActual.ColaReproduccion.Cancion[puntero].Titulo.ToString();


                UsuarioCAD usuCAD = new UsuarioCAD();
                UsuarioCEN usuCEN = new UsuarioCEN(usuCAD);
                usuarioActual = usuCEN.obtenerUsuario(usuarioActual.Nombre);

//                CancionCAD cancionCad = new CancionCAD();
//               CancionCEN cancionCen = new CancionCEN(cancionCad);
//                IList<CancionEN> canciones = cancionCen.ObtenerCanciones();
                dgvCanciones.DataSource = usuarioActual.ColaReproduccion.Cancion;
                int i = 0;
                for (i = 0; i < usuarioActual.ColaReproduccion.Cancion.Count(); i++)
                {
                    dgvCanciones.Rows[i].Cells[0].Value = usuarioActual.ColaReproduccion.Cancion[i].IdCancion.ToString();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("error", ex.ToString());
            }
        }

        private void dgvCanciones_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex > -1)
            {
                seleccion = dgvCanciones.Rows[e.RowIndex].Cells[0].Value.ToString();
                punteroseleccion = e.RowIndex;
            }
        }

        private void btPlay_Click(object sender, EventArgs e)
        {
            try
            {
                puntero = punteroseleccion;
                if (puntero > usuarioActual.ColaReproduccion.Cancion.Count || puntero < 0)
                    throw new Exception("Se ha seleccionado una cancion fuera de la lista");

                lbCancionSeleccionada.Text = usuarioActual.ColaReproduccion.Cancion[puntero].Titulo.ToString();
                lbEstado.Text = "sonando";
            }
            catch(Exception ex)
            {
                if (puntero > usuarioActual.ColaReproduccion.Cancion.Count)
                    puntero = usuarioActual.ColaReproduccion.Cancion.Count;
                if (puntero < 0)
                    puntero = 0;
                MessageBox.Show("error", ex.ToString());

            }
        }

        private void btStop_Click(object sender, EventArgs e)
        {
            lbEstado.Text = "parado";
        }

        private void btSiguiente_Click(object sender, EventArgs e)
        {
            try
            {
                puntero = puntero + 1;
                if (puntero == usuarioActual.ColaReproduccion.Cancion.Count)
                    puntero = 0;

                lbCancionSeleccionada.Text = usuarioActual.ColaReproduccion.Cancion[puntero].Titulo.ToString();
            }
            catch (Exception ex)
            {
                MessageBox.Show("error", ex.ToString());

            }
        }

        private void btAnterior_Click(object sender, EventArgs e)
        {
            try
            {
                puntero = puntero - 1;


                if (puntero < 0)
                    puntero = usuarioActual.ColaReproduccion.Cancion.Count - 1;

                lbCancionSeleccionada.Text = usuarioActual.ColaReproduccion.Cancion[puntero].Titulo.ToString();
            }
            catch (Exception ex)
            {
                if (puntero > usuarioActual.ColaReproduccion.Cancion.Count)
                    puntero = usuarioActual.ColaReproduccion.Cancion.Count;
                if (puntero < 0)
                    puntero = 0;
                MessageBox.Show("error", ex.ToString());

            }
        }

        private void btBorrarCola_Click(object sender, EventArgs e)
        {
            ColaReproduccionCAD colaCAD = new ColaReproduccionCAD();
            ColaReproduccionCEN colaCEN = new ColaReproduccionCEN(colaCAD);
            colaCEN.BorrarColaReproduccion(usuarioActual.ColaReproduccion.IdCola);
            this.Close();
        }
    }
}
